﻿using System;
using System.Data;
using System.Windows.Forms;
using System.Collections.Generic;

namespace PJRScrum
{
    public partial class ImporteerArtikel : Form
    {
        View v;

        public ImporteerArtikel()
        {
            InitializeComponent();
            v = View.GetInstance();
        }

        /// <summary>
        /// Event aangeroepen na kliken van importeer button.
        /// Button is standard enabled:false. 
        /// Pas als de input in de velden voldoet aan de regels, is deze enabled:true.
        /// </summary>
        /// <param name="sender">Zender</param>
        /// <param name="e">Args</param>
        private void buttonImporteer_Click(object sender, EventArgs e)
        {
            string klasse = comboBoxKlasse.SelectedItem.ToString();
            string naam = textBoxNaam.Text;
            string categorie = comboBoxCategorie.SelectedItem.ToString();
            double prijs = new double();
            int volume = new int();
            bool error = new bool();

            try //is het een getal?
            {
                prijs = Convert.ToDouble(textBoxPrijs.Text);
            
            }
            catch (Exception)
            {
                error = true;
                MessageBox.Show("Dit is geen geldige prijs! Formaat: 1.23");
            }

            try //is het een getal?
            {
                volume = Convert.ToInt32(textBoxVolume.Text);           
            }
            catch (Exception)
            {
                error = true;
                MessageBox.Show("Dit is geen geldige volume! Formaat in milliliters. Voorbeeld: 1000 (=1 liter)");
            }

            //Error wordt true als 1 van de 2 try statements resulteert in een exception
            if (error) 
            {
                labelMelding.Text = "Corrigeer uw invoer!";                
            }
            
            //Geen error? Laad het nieuwe artikel dan in de database
            else
            {                
                v.VoegArtikelToe(klasse, naam, prijs, volume, categorie);                           
            }
        }

        /// <summary>
        /// Form load.
        /// Hier willen we de categorieen uit de database halen
        /// </summary>
        /// <param name="sender">Zender</param>
        /// <param name="e">Args</param>
        private void ImporteerArtikel_Load(object sender, EventArgs e)
        {
            LaadCategorieen();      
        }

        /// <summary>
        /// Het laden van de categorieen uit de database
        /// </summary>
        private void LaadCategorieen()
        {
            List<string> catL = new List<string>();
            catL = v.LaadCategorie();

            foreach (string s in catL)
            {
                comboBoxCategorie.Items.Add(s);
            }
        }

        /// <summary>
        /// Event
        /// Wordt aangeroepen door:
        ///     *textBoxNaam (textchange event)
        ///     *comboBoxKlasse (selectedIndexChange)
        ///     *comboBoxCategorie (selectedIndexChange)
        ///     *textBoxPrijs (textchange event)
        ///     *textBoxVolume (textchange event)
        /// 
        /// Wanneer deze ingevuld of geselecteerd zijn geworden, word de button Importeer enabled.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void eventInteractieGebruiker(object sender, EventArgs e)
        {
            if (textBoxNaam.Text != "" && comboBoxKlasse.SelectedIndex != -1 && comboBoxCategorie.SelectedIndex != -1 &&
                textBoxPrijs.Text != "" && textBoxVolume.Text != "")
            {
                buttonImporteer.Enabled = true;
            }
        }
    }
}
